/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package InterfaceGUI;
import data.*;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Container.*;
import javax.swing.text.MaskFormatter;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.awt.event.ItemListener;


public class kalendereintragAktualisieren {

//Deklarierung der Variablen
JButton abbrechen;
JButton aktualisieren;
JFrame frame;
JTextField titelField;
JTextField beschreibungField;
JTextField ortField;
DefaultComboBoxModel comboBoxModel1;
JList liststart;
JList listWerk;
JScrollPane scroller;
JLabel titelLabel;
JLabel beschreibungLabel;
JLabel ortLabel;
JLabel startLabel;
JLabel endeLabel;
JLabel kategorieLabel;
JTextField startField;
JTextField endeField;
JLabel erstelltVonLabel;
JComboBox erstelltVon;
JLabel erinnerungLabel;
JComboBox erinnerung;
JLabel kalenderLabel;
JComboBox kalender;
JLabel kalendereintragtypLabel;
JComboBox kalendereintragtyp;
JLabel teilnehmerLabel;
JComboBox Teilnehmer;
JButton ok;
JList listTeilnehmer;
JTextField kategorieField ;

public static void main(String[] args) {
        kalendereintragAktualisieren gui = new kalendereintragAktualisieren();
        gui.kalendereintragAktualisieren();
        }

//Methode welche den Frame, mitsamt den Panels und Komponenten erstellt
public void kalendereintragAktualisieren(){

//ein neuer Frame wird erstellt
frame = new JFrame ("Kalendereintrag aktualisieren");

//ein neues Panel wird erstellt
JPanel kalendereintragAktualisierenPanel = new JPanel();

//ein neues Gridbaglayout wird erstellt
GridBagLayout gbl = new GridBagLayout();

//dem buchungAktualisierenPanel wird das neue Gridbaglayout zugewiesen
kalendereintragAktualisierenPanel.setLayout(gbl);

//es werden neue GridBagConstraints erstellt
GridBagConstraints constraints = new GridBagConstraints();

kalendereintragtypLabel = new JLabel("Kalendereintragtyp:");
constraints.insets = new Insets( 9,9,9,9 );
constraints.anchor = GridBagConstraints.WEST;
constraints.weightx = 0;
kalendereintragAktualisierenPanel.add(kalendereintragtypLabel, constraints);

kalendereintragtyp = new JComboBox();
Dimension groessekalendereintragtyp = new Dimension(310, 25);
kalendereintragtyp.setPreferredSize(groessekalendereintragtyp);
//constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
//Combobox mit vordefinierten Daten f�llen
kalendereintragtyp.addItem("Kalendereintrag");
kalendereintragtyp.addItem("Termin");
kalendereintragAktualisierenPanel.add(kalendereintragtyp, constraints);


ok = new JButton("OK");
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(ok, constraints);
ok.addActionListener(new okListener());


// Titel Label und Titel Textfeld erstellen.
titelLabel = new JLabel("Titel:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(titelLabel, constraints);

titelField = new JTextField(30);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(titelField, constraints);

kategorieLabel= new JLabel("Kategorie:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(kategorieLabel, constraints);

kategorieField = new JTextField(30);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(kategorieField, constraints);


// ort Label und ort Textfeld erstellen.
ortLabel= new JLabel("Ort:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(ortLabel, constraints);

ortField = new JTextField(30);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(ortField, constraints);


// beschreibung Label und beschreibung Textfeld erstellen.
beschreibungLabel = new JLabel("Beschreibung:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(beschreibungLabel, constraints);

 beschreibungField = new JTextField(50);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(beschreibungField, constraints);


//start Label erstellen
startLabel= new JLabel("Start:");
constraints.insets = new Insets(46,9,0,0);
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(startLabel, constraints);

startField = new JTextField(30);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(startField, constraints);

endeLabel= new JLabel("Ende:");
constraints.insets = new Insets( 9,9,9,9 );
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(endeLabel, constraints);

endeField = new JTextField(30);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(endeField, constraints);

erstelltVonLabel= new JLabel("Erstellt von:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(erstelltVonLabel, constraints);

erstelltVon = new JComboBox();
//Dimension groesseerstelltVon = new Dimension(310, 25);
erstelltVon.setPreferredSize(groessekalendereintragtyp);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(erstelltVon, constraints);

erinnerungLabel= new JLabel("Erinnerung:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(erinnerungLabel, constraints);

erinnerung = new JComboBox();
//Dimension groesseerinnerung = new Dimension(3100, 25);
erinnerung.setPreferredSize(groessekalendereintragtyp);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
erinnerung.addItem("Ja");
erinnerung.addItem("Nein");
kalendereintragAktualisierenPanel.add(erinnerung, constraints);

kalenderLabel= new JLabel("Kalender auswählen:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(kalenderLabel, constraints);

kalender = new JComboBox();
//Dimension groessekalender = new Dimension(310, 25);
kalender.setPreferredSize(groessekalendereintragtyp);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(kalender, constraints);

teilnehmerLabel= new JLabel("Teilnehmer auswählen:");
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(teilnehmerLabel, constraints);
teilnehmerLabel.setVisible(false);

//JList mit Scrollbar für die Herausgeber erstellen
String[] DATA = {
    "Person 1", "Person 2", "Person 3"
     };
listTeilnehmer = new JList(DATA);
listTeilnehmer.setSelectionMode(
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
scroller = new JScrollPane(listTeilnehmer);
listTeilnehmer.setSelectedIndex(2);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(scroller, constraints);
listTeilnehmer.setVisible(false);
scroller.setVisible(false);

//Button Aktualisieren erstellen + ActionListener hinzufügen
aktualisieren = new JButton("aktualisieren");
constraints.insets = new Insets(56,9,0,0);
constraints.gridwidth = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(aktualisieren, constraints);
aktualisieren.addActionListener(new AktualisierenListener());

//Button abbrechen erstellen + ActionListener hinzufügen
abbrechen = new JButton("abbrechen");
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
kalendereintragAktualisierenPanel.add(abbrechen, constraints);
abbrechen.addActionListener(new kalendereintragabbrechenListener());

//Framegröße festlegen
frame.getContentPane().add(kalendereintragAktualisierenPanel);
frame.setSize(800, 800);
frame.setResizable(false);
frame.setVisible(true);
}

//Button Events zuordnen (Aktualisieren)
class AktualisierenListener implements ActionListener{

    public void actionPerformed(ActionEvent event){

    //Auslesen der ausgewählten Elemente der JList "start"
    int selectionsstart[] = liststart.getSelectedIndices();
    Object selectedValuesstart[] = liststart.getSelectedValues();
          for (int i = 0, n = selectionsstart.length; i < n; i++) {
            if (i == 0) {
              System.out.println("  Selections: ");
            }
            System.out.println(selectionsstart[i] + "/" + selectedValuesstart[i] + " ");
          }

    //Auslesen der ausgewählten Elemente der JList "Werke zuordnen"
    int selectionsende[] = listWerk.getSelectedIndices();
    Object selectedValuesende[] = listWerk.getSelectedValues();
          for (int i = 0, n = selectionsende.length; i < n; i++) {
            if (i == 0) {
              System.out.println("  Selections: ");
            }
            System.out.println(selectionsende[i] + "/" + selectedValuesende[i] + " ");
          }


    int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie dieses Kalendereintrag aktualisieren?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION){

        //auslesen der einzelnen Strings der Felder. Diese werden dann in der Variable Ergebnisfelder zusammengefasst
        String titel = titelField.getText();
        int beschreibung = Integer.parseInt(beschreibungField.getText());
        int ort = Integer.parseInt(ortField.getText());

//        JOptionPane.showMessageDialog(frame,ergebnisFelder);

        //Überprüfen ob die zu Aktualisierende Person einen Titel trägt. Wenn Nein wird der leere String durch
        // Füllzeichen ersetzt um keine Konflikte mit der DB zu bekommen
        if (titel.equals("")) {
            titel = "no title";
        }

        //Überprüfen ob alle Pflichtfelder ausgefüllt sind
        if (titel.equals("")) {
            JOptionPane.showMessageDialog(frame,"Bitte alle Pflichtfelder ausfüllen!");

        //Hier muss noch eingebaut bwerden dass der Prozess nicht weiterläuft

        }

        try {
                        // Zunächst benötigen wir eine Verbindung mit der Verwaltung.
                        Verwaltung verwaltung =
                                (Verwaltung)Naming.lookup("rmi:/localhost:1099/DRM");

                        /*
                         * Wenn wir hier ankommen, dann besteht eine Verbinung zum Server.
                         * Wäre die Verbindung nicht zustande gekommen, so wäre eine Exception
                         * ausgeworfen worden und das Programm wäre in den entsprechenden
                         * Catch-Block (s.u.) gesprungen.
                         */
                        System.out.println("Verbindung hergestellt...");

                        // Von der Verwaltung bekommen wir das Bank-Objekt.
                        //Bank bank = verwaltung.getBank();

                        // Hier wird entsprechend eine neue Person angelegt.
                        //kalendereintrag x = verwaltung.createWerk(titel, beschreibung, ort, kategorie);

                }
                catch (MalformedURLException murle) {
                        System.out.println("MalformedURLException");
                        System.out.println(murle);
                }
                catch (RemoteException re) {
                        System.out.println("RemoteException");
                        System.out.println(re);
                }
                catch (NotBoundException e) {
                        System.out.println("NotBoundException");
                        System.out.println(e);
                }
                catch (NullPointerException np) {
                        System.out.println("NullPointerException");
                        System.out.println(np);
                }



        JOptionPane.showMessageDialog(frame,"Kalendereintrag aktualisiert!");
            frame.setVisible(false);
      }
        else if (antwort == JOptionPane.NO_OPTION)
        frame.setVisible(false);
      }
}

//Button Events zuordnen (abbrechen)
class kalendereintragabbrechenListener implements ActionListener{

    public void actionPerformed(ActionEvent event){

      int antwort = JOptionPane.showConfirmDialog(frame, "Wollen Sie den Vorgang wirklich beenden?",
      "", JOptionPane.YES_NO_OPTION);
      if (antwort == JOptionPane.YES_OPTION)
      frame.setVisible(false);
    }
}

class okListener implements ActionListener{

public void actionPerformed(ActionEvent event){

     if(kalendereintragtyp.getSelectedItem().equals("Termin"))
        { teilnehmerLabel.setVisible(true);
          listTeilnehmer.setVisible(true);
          scroller.setVisible(true);
     }

if(kalendereintragtyp.getSelectedItem().equals("Kalendereintrag"))
        { teilnehmerLabel.setVisible(false);
          listTeilnehmer.setVisible(false);
          scroller.setVisible(false);
     }
}
}

}